/*
 *   Clovis
 *   Copyright (C) 2008 SFWOL
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef __LUA_STATE_H
#define __LUA_STATE_H

//extern "C" {
//
//    #include "../lib/lua/lua.h"
//    #include "../lib/lua/lualib.h"
//    #include "../lib/lua/lauxlib.h"
//
//	#include "Functions.h"
//
//}
//
//#include "../lib/lunar/lunar.h"
//#define method(class, name) {#name, &class::name}
//
//#include "../core/CString.h"
//
//namespace clovis {
//
//	namespace lua {
//
//		//! Enumeration of all the possible modules to use to interract with Clovis.
//		enum LUA_MODULE {
//
//			//! The core module for Lua scripts
//            CORE,
//            //! The video module for Lua scripts
//            VIDEO,
//            //! The audio module for Lua scripts
//            AUDIO
//
//        };
//
//		/*!
//		 * Customized Lua execution environment.
//		 */
//		class LuaState {
//
//			private:
//
//				lua_State * L;	// The current Lua_State
//
//				void registerCoreModule();
//				void registerVideoModule();
//				void registerAudioModule();
//
//			public:
//
//				/*!
//				 * Creates a new customized execution environment for Lua scripts.
//				 */
//				LuaState();
//
//				LuaState(lua_State * L);
//
//				/*!
//				 * Destructor (perform a clean `lua_close` on the current Lua state).
//				 */
//				~LuaState();
//
//				/*!
//				 * Load a Clovis Module to the current LuaState.
//				 * \arg module The LUA_MODULE wz wants to load into the LuaState.
//				 */
//				void loadModule(LUA_MODULE module);
//
//				/*!
//				 * Get the current lua state.
//				 * \return The pointer to the current Lua state.
//				 */
//				lua_State * getCurrentLuaState();
//
//				/*!
//				 * Load and execute a script file.
//				 * \arg file The file to load
//				 * \return 0 : no error ; -1 : error(s) occured
//				 */
//				int executeFile(core::CString file);
//
//				int executeCommand(core::CString cmd);
//
//				/*!
//				 * Print the error buffer on the standard output.
//				 */
//				void printErrors();
//
//		};
//
//
//	};
//
//};

#endif
